#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
/*
if 的三种用法

// 选择语句
if(表达式)
{

}

// 选择语句
if(表达式)
{

}

else
{

}

// 分支语句
if(表达式)
{

}
else if
{

}
else
{

}

*/

void show_menu(char * buf)
{
    system("clear");
    printf("\n\n\n \t\t\t\t 欢迎来的 %s 界面\n" , buf);
    printf("\n\n\n 按回车键返回主菜单" );
    char  buf_1[12];
    scanf("%s" , buf_1);
}



int main(int argc, char const *argv[])
{
    // 二维数组
    char menu_arr[10][128];
    int menu_len = 0;
    char menu[128];
    int option; // 选择
    char option_str[128]; // 选择

    system("clear");

    // 往菜单数组内加入菜单项
    for (size_t i = 0; i < 10; i++)
    {
        system("clear");
        printf("输入 1 进行添加菜单 输入 0 推出添加菜单");
        option = 0;
        scanf("%d" , &option);

        // 用户选择了 0 退出编辑
        if (0 == option)
        {
            if (0 == menu_len)
            {
                printf("为输入菜单项 退出程序\n");
                return 0;
            }
            // 推出循环 
            break;
        }
        else 
        {
            // 清空字符串
            memset(menu , 0 , sizeof(menu));

            // 写入菜单字符串
            printf("请输入菜单项:");
            scanf("%s" , menu);

            // 将菜单字符串写入到菜单中
            strcpy( menu_arr[i] , menu);

            // 迭代次数
            menu_len++;
        }
        
    }
    

    
    

    // 选择菜单项目  通过选择不同的菜单项 从而跳转到不同的函数
    while (1)
    {
        system("clear");
        // 打印菜单项目  
        for (size_t i = 0; i < menu_len; i++)
        {
            printf("%ld、%s\n" , i + 1 , menu_arr[i]);
        }

        // 选择菜单项目
        printf("请输出你选择菜单的选项:(输入选项的文字)");

        // 清空字符串
        memset(option_str , 0 , sizeof(option_str));
        scanf("%s" , option_str);

        // 通过 if else if 来分支进入函数
        if(!strcmp(option_str , menu_arr[0]))
        {
            show_menu(option_str);
        }
        else if(!strcmp(option_str , menu_arr[1]))
        {
            show_menu(option_str);
        }
        else 
        {
            printf("输入有误 请重新输入\n");
            sleep(2);
        }
    }

    return 0;
}


